<?php

class Causas extends CI_Controller {

    function __construct() {
        parent::__construct();
        $this->datosusuario = $this->authentication->getDataLogged();
        $this->load->model('m_causa', 'causa');
        $this->load->model('m_caratula', 'caratula');
        $this->load->model('m_estado', 'estado');
        $this->load->model('m_causa_x_estado', 'causa_x_estado');
        $this->load->model('m_depto_judicial', 'depto_judicial');
        $this->load->model('m_fuero', 'fuero');
        $this->load->model('m_partido_del_hecho', 'partido_del_hecho');
        $this->load->model('m_estudio', 'estudios');
    }

    /**
     * Listado de causas.
     *
     * @return void
     */
    function index() {
        $this->load->model('m_fuero', 'fuero');

        $fuero_array = $this->fuero->getList();
        foreach ($fuero_array as $value) {
            $fueros[$value->id] = $value->nombre;
        }

        $causas_sin_demandados = $this->causa->getCausasSinDemandados($this->datosusuario['estudioId']);

        $top = count($causas_sin_demandados);
        for ($i = 0; $i < $top; $i++) {
            $causas_sin_demandados[$i]->caratula = $this->caratula->getUltimaCaratula($causas_sin_demandados[$i]->id);
        }

        $causas = $this->causa->getCausasAbiertas($this->datosusuario['estudioId']);

        $top = count($causas);
        for ($i = 0; $i < $top; $i++) {
            $causas[$i]->caratula = $this->caratula->getUltimaCaratula($causas[$i]->id);
        }

        $data = array(
            'titulo' => 'Listado de Causas',
            'datosusuario' => $this->datosusuario,
            'seleccionar' => 'causas',
            'causas_sin_demandados' => $causas_sin_demandados,
            'causas' => $causas,
            'fueros' => $fueros,
        );

        $this->load->view('templates/header', $data);
        $this->load->view('templates/topbar');
        $this->load->view('causas/leftbar');
        $this->load->view('causas/index');
        $this->load->view('templates/footer');
    }

    /**
     * Listado de causas finalizadas.
     *
     * @return void
     */
    function finalizadas() {
        $this->load->model('m_fuero', 'fuero');

        $fuero_array = $this->fuero->getList();
        foreach ($fuero_array as $value) {
            $fueros[$value->id] = $value->nombre;
        }

        $causas = $this->causa->getCausasFinalizadas($this->datosusuario['estudioId']);

        $top = count($causas);
        for ($i = 0; $i < $top; $i++) {
            $causas[$i]->caratula = $this->caratula->getUltimaCaratula($causas[$i]->id);
        }

        $data = array(
            'titulo' => 'Listado de Causas Finalizadas',
            'datosusuario' => $this->datosusuario,
            'seleccionar' => 'causas',
            'causas' => $causas,
            'fueros' => $fueros,
        );

        $this->load->view('templates/header', $data);
        $this->load->view('templates/topbar');
        $this->load->view('causas/leftbar');
        $this->load->view('causas/index');
        $this->load->view('templates/footer');
    }

    /**
     * Crea una nueva causa.
     *
     * @return void
     */
    function nuevo() {

        $this->form_validation->set_rules(array_merge($this->causa->getValidacion(), $this->caratula->getValidacion()));
        if ($this->form_validation->run() === FALSE) {
            if (isset($_POST['submit'])) {
                set_message(array('3' => validation_errors()));
                $causa = $_POST;
            } else {
                $causa = array_merge($this->causa->valoresPorDefecto(), $this->caratula->valoresPorDefecto());
            }

            $data = $this->_get_form_data();

            $data['titulo'] = 'Nueva Causa';
            $data['causa'] = $causa;
            $data['seleccionar'] = 'causas';

            $this->load->view('templates/header', $data);
            $this->load->view('templates/topbar');
            $this->load->view('causas/leftbar');
            $this->load->view('causas/form');
            $this->load->view('templates/footer');
        } else {
            $this->load->model('m_logs', 'logs');
            $_POST['fechaInicio'] = normal_to_database_date($_POST['fechaInicio']);
            $_POST['fechaPrecentacion'] = normal_to_database_date($_POST['fechaPrecentacion']);
            $estados = $this->estado->getList(array('id' => $_POST['fueroId']));

            $this->causa->setAttributes($this->input);
            $this->causa->usuarioId = $this->datosusuario['id'];
            $this->causa->finalizada = NULL;
            $this->causa->save();
            $this->causa->logs('nuevo', $this->datosusuario['id'], $this->logs);

            $this->caratula->setAttributes($this->input);
            $this->caratula->causaId = $this->causa->id;
            $this->caratula->save();
            $this->caratula->logs('nuevo', $this->datosusuario['id'], $this->logs);

            $this->causa_x_estado->causaId = $this->causa->id;
            $this->causa_x_estado->estadoId = $estados[0]->id;
            $this->causa_x_estado->usuarioId = $this->datosusuario['id'];
            $this->causa_x_estado->fecha = gmdate('Y-m-d H:i:s');
            $this->causa_x_estado->fechaEstado = gmdate('Y-m-d H:i:s');
            $this->causa_x_estado->descripcion = '';
            $this->causa_x_estado->save();
            $this->causa_x_estado->logs('nuevo', $this->datosusuario['id'], $this->logs);

            redirect('causas/ver/' . $this->causa->id);
        }
    }

    /**
     * Edita una causa.
     *
     * @param integer $id de la causa para editar.
     * @return void
     */
    function ver($id = '') {

        if ($id == '')
            redirect('causas/');

        $this->load->model('m_demandado', 'demandado');
        $this->load->model('m_pericia', 'pericia');
        $this->load->model('m_pedido_subsidio', 'pedido_subsidio');
        $this->load->model('m_novedad', 'novedad');
        $this->load->model('m_partido_del_hecho', 'partido_del_hecho');

        $this->causa->get((int) $id);

        $this->authentication->puedeVerCausa($this->causa->id);

        $caratula = $this->caratula->getUltimaCaratula($this->causa->id);
        $estado = $this->estado->getUltimoEstado($this->causa->id);
        $this->fuero->get($this->causa->fueroId);
        $fuero = $this->fuero;
        $this->depto_judicial->get($this->causa->deptoJudicialId);
        $depto_judicial = $this->depto_judicial;

        $this->partido_del_hecho->get($this->causa->partidoHechoId);
        $partido_del_hecho = $this->partido_del_hecho;

        $causa['causa']['id'] = $this->causa->id;
        $causa['causa']['fueroId'] = $this->causa->fueroId;
        $causa['causa']['caratula'] = $caratula->nombre;
        $causa['causa']['nroExpediente'] = $caratula->nroExpediente;
        $causa['causa']['finalizada'] = $this->causa->finalizada;

        $this->session->set_userdata($causa);

        $data = array(
            'titulo' => 'Ver Causa',
            'causa' => $this->causa,
            'datoscausa' => $causa['causa'],
            'caratula' => $caratula,
            'estado' => $estado,
            'fuero' => $fuero,
            'estudios' => $estudios,
            'demandados' => $this->demandado->getListPorCausaId($this->causa->id),
            'pericias' => $this->pericia->getListPorCausaId($this->causa->id),
            'pedido_subsidios' => $this->pedido_subsidio->getLista($this->causa->id),
            'estado_pedido_subsidio' => getListEstadoPedidoSubsidio(),
            'novedades' => $this->novedad->getListNoAdmin($this->causa->id),
            'depto_judicial' => $depto_judicial,
            'partido_del_hecho' => $partido_del_hecho,
            'seleccionar' => 'causas',
            'datosusuario' => $this->datosusuario,
        );

        $this->load->view('templates/header', $data);
        $this->load->view('templates/topbar');
        $this->load->view('causas/leftbarcausa');
        $this->load->view('causas/ver');
        $this->load->view('templates/footer');
    }

    /**
     * Obtiene los datos para el formulario.
     *
     * @return array
     */
    private function _get_form_data() {
        $depto_judicial_array = $this->depto_judicial->getList(array('nombre' => 'ASC'));

        $depto_judicial[''] = 'Seleccione un Depto Judicial';

        foreach ($depto_judicial_array as $value) {
            $depto_judicial[$value->id] = $value->nombre;
        }

        $fuero_array = $this->fuero->getList();

        $fueros[''] = 'Seleccione un Fuero';

        foreach ($fuero_array as $value) {
            $fueros[$value->id] = $value->nombre;
        }

        $partido_del_hecho_array = $this->partido_del_hecho->getList(array(), array('nombre' => 'ACS'));
        $partido_del_hecho[''] = 'Seleccione un Partido del Hecho';

        foreach ($partido_del_hecho_array as $value) {
            $partido_del_hecho[$value->id] = $value->nombre;
        }

        return $data = array(
            'datosusuario' => $this->datosusuario,
            'depto_judicial' => $depto_judicial,
            'partido_del_hecho' => $partido_del_hecho,
            'fueros' => $fueros,
        );
    }

    /**
     * Crea una nueva causa.
     *
     * @return void
     */
    function finalizar() {
        $causa = $this->session->userdata('causa');
        $this->authentication->puedeVerCausa($causa['id']);
        $this->causa->get($causa['id']);

        $valid = array(
            array('field' => 'finalizada', 'label' => 'Fecha de Finalización', 'rules' => 'trim|required'),
            array('field' => 'valoracion', 'label' => 'Valoración', 'rules' => 'trim|required'),
            array('field' => 'observacion', 'label' => 'Observación', 'rules' => 'trim|required'),
        );

        $this->form_validation->set_rules($valid);
        if ($this->form_validation->run() === FALSE) {
            if (isset($_POST['submit'])) {
                set_message(array('3' => validation_errors()));
                $causa = $_POST;
            } else {
                $causa = $this->causa->valoresPorDefecto();
            }

            $data['titulo'] = 'Finalizar Causa';
            $data['causa'] = $causa;
            $data['seleccionar'] = 'causas';
            $data['valoraciones'] = getListValoreciones();
            $data['datosusuario'] = $this->datosusuario;

            $this->load->view('templates/header', $data);
            $this->load->view('templates/topbar');
            $this->load->view('causas/leftbarcausa');
            $this->load->view('causas/finalizar');
            $this->load->view('templates/footer');
        } else {

            $this->causa->finalizada = normal_to_database_date_2($_POST['finalizada']);
            $this->causa->valoracion = $_POST['valoracion'];
            $this->causa->observacion = $_POST['observacion'];
            $this->causa->save();

            set_message(array('1' => 'Se ha finalizado la causa con éxito.'));

            redirect('causas/');
        }
    }
}

